package com.itheima.health.controller;


import com.itheima.health.common.MessageConst;
import com.itheima.health.common.RedisConst;
import com.itheima.health.entity.Result;
import com.itheima.health.util.ValidateCodeUtils;
import lombok.Value;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

@RequestMapping("/mobile/validateCode")
@RestController
@Slf4j
public class VerificationCodeController {

    @Autowired
    private RedisTemplate redisTemplate;
    @PostMapping("/send")
    public Result send( String type,String telephone){
        log.info("[验证码-发送]type:{},telephone:{}",type,telephone);
        // type用于区分业务 不同 type存的方式不同
        //生成验证码
        //生成随机的四位验证码
        Integer code = ValidateCodeUtils.generateValidateCode(4);
        log.info("发送给用户的验证码是:"+code);
        // 我们要把手机号 和验证码 存储到 redis中
        String key= RedisConst.VALIDATE_CODE_PREFIX +"_"+type+"_"+telephone;
        redisTemplate.opsForValue().set(key,code,2, TimeUnit.MINUTES);
        //   redisTemplate.boundValueOps(redisKey).set(code,2,TimeUnit.MINUTES)
        //   45  46 这两行代码一个意思
        // 手机号:code   存储时间 2 单位 分钟
        //  字符串  --- code--用Integer的序列化形式 .toString()写出出去了
        return new Result(true, MessageConst.SEND_VALIDATECODE_SUCCESS);
    }
}
